home *** CD-ROM | disk | FTP | other *** search
/ Hardcore Visual Basic 5.0 (2nd Edition) / Hardcore Visual Basic 5.0 - Second Edition (1997)(Microsoft Press).iso / Code / System.cls < prev    next >
Text File  |  1997-06-14  |  5KB  |  184 lines

  1. VERSION 1.0 CLASS
  2. BEGIN
  3.   MultiUse = -1  'True
  4. END
  5. Attribute VB_Name = "CSystem"
  6. Attribute VB_GlobalNameSpace = False
  7. Attribute VB_Creatable = False
  8. Attribute VB_PredeclaredId = False
  9. Attribute VB_Exposed = True
  10. Option Explicit
  11.  
  12. Public Enum EErrorSystem
  13.     eeBaseSystem = 13250    ' CSystem
  14. End Enum
  15.  
  16. Private iWinMajor As Integer
  17. Private iWinMinor As Integer
  18. Private sMode As String
  19. Private sys As SYSTEM_INFO
  20.  
  21. Private Sub Class_Initialize()
  22.     Dim dw As Long, c As Integer
  23.     dw = GetVersion()
  24.     iWinMajor = dw And &HFF&
  25.     iWinMinor = (dw And &HFF00&) / &H100&
  26.     sMode = IIf(dw And &H80000000, "Windows 95", "Windows NT")
  27.     GetSystemInfo sys
  28. End Sub
  29.  
  30. Property Get FreePhysicalMemory() As Long
  31.     Dim mem As MEMORYSTATUS
  32.     mem.dwLength = Len(mem)
  33.     GlobalMemoryStatus mem
  34.     FreePhysicalMemory = mem.dwAvailPhys \ 1024
  35. End Property
  36.  
  37. Property Get TotalPhysicalMemory() As Long
  38.     Dim mem As MEMORYSTATUS
  39.     mem.dwLength = Len(mem)
  40.     GlobalMemoryStatus mem
  41.     TotalPhysicalMemory = mem.dwTotalPhys \ 1024
  42. End Property
  43.  
  44. Property Get FreeVirtualMemory() As Long
  45.     Dim mem As MEMORYSTATUS
  46.     mem.dwLength = Len(mem)
  47.     GlobalMemoryStatus mem
  48.     FreeVirtualMemory = mem.dwAvailVirtual \ 1024
  49. End Property
  50.  
  51. Property Get TotalVirtualMemory() As Long
  52.     Dim mem As MEMORYSTATUS
  53.     mem.dwLength = Len(mem)
  54.     GlobalMemoryStatus mem
  55.     TotalVirtualMemory = mem.dwTotalVirtual \ 1024
  56. End Property
  57.  
  58. Property Get FreePageFile() As Long
  59.     Dim mem As MEMORYSTATUS
  60.     mem.dwLength = Len(mem)
  61.     GlobalMemoryStatus mem
  62.     FreePageFile = mem.dwAvailPageFile \ 1024
  63. End Property
  64.  
  65. Property Get TotalPageFile() As Long
  66.     Dim mem As MEMORYSTATUS
  67.     mem.dwLength = Len(mem)
  68.     GlobalMemoryStatus mem
  69.     TotalPageFile = mem.dwTotalPageFile \ 1024
  70. End Property
  71.  
  72. Property Get MemoryLoad() As Long
  73.     Dim mem As MEMORYSTATUS
  74.     mem.dwLength = Len(mem)
  75.     GlobalMemoryStatus mem
  76.     MemoryLoad = mem.dwMemoryLoad
  77. End Property
  78.  
  79. Property Get WinMajor() As Integer
  80.     WinMajor = iWinMajor
  81. End Property
  82.  
  83. Property Get WinMinor() As Integer
  84.     WinMinor = iWinMinor
  85. End Property
  86.  
  87. Property Get WinVersion() As Single
  88.     WinVersion = iWinMajor + (iWinMinor / 100)
  89. End Property
  90.  
  91. Property Get Processor() As String
  92.     If sMode = "Windows 95" Then
  93.         Processor = "Intel "
  94.         Select Case sys.dwProcessorType
  95.         Case 386
  96.             Processor = Processor & "386"
  97.         Case 486
  98.             Processor = Processor & "486"
  99.         Case 586
  100.             Processor = Processor & "586"
  101.         End Select
  102.     Else
  103.         Select Case sys.wProcessorArchitecture
  104.         Case PROCESSOR_ARCHITECTURE_INTEL
  105.             Processor = "Intel "
  106.             Select Case sys.wProcessorLevel
  107.             Case 3, 4
  108.                 Processor = Processor & sys.wProcessorLevel & "86"
  109.             Case 5
  110.                 Processor = Processor & "Pentium"
  111.             Case Else
  112.                 Processor = Processor & "Level " & sys.wProcessorLevel
  113.             End Select
  114.         Case PROCESSOR_ARCHITECTURE_MIPS
  115.             Processor = "MIPS R" & sys.wProcessorLevel & "000"
  116.         Case PROCESSOR_ARCHITECTURE_ALPHA
  117.             Processor = "Alpha " & sys.wProcessorLevel
  118.         Case PROCESSOR_ARCHITECTURE_PPC
  119.             Processor = "Power PC " & IIf(sys.wProcessorLevel > 9, "6", "60") & _
  120.                         sys.wProcessorLevel
  121.         Case PROCESSOR_ARCHITECTURE_UNKNOWN
  122.             Processor = "Unknown"
  123.         Case Else
  124.             Processor = "Other " & sys.wProcessorArchitecture & " " & sys.wProcessorLevel
  125.         End Select
  126.     End If
  127. End Property
  128.  
  129. Property Get ProcessorCount() As String
  130.     ProcessorCount = sys.dwNumberOfProcessors
  131. End Property
  132.  
  133. Property Get Mode() As String
  134.     Mode = sMode
  135. End Property
  136.  
  137. Property Get WindowsDir() As String
  138.     Dim s As String, c As Long
  139.     s = String$(cMaxPath, 0)
  140.     c = GetWindowsDirectory(s, cMaxPath)
  141.     WindowsDir = Left(s, c)
  142. End Property
  143.  
  144. Property Get SystemDir() As String
  145.     Dim s As String, c As Long
  146.     s = String$(cMaxPath, 0)
  147.     c = GetSystemDirectory(s, cMaxPath)
  148.     SystemDir = Left(s, c)
  149. End Property
  150.  
  151. Property Get User() As String
  152.     Dim s As String, c As Long
  153.     c = 80: s = String$(c + 1, 0)
  154.     ' Includes null in returned length, unlike all other API functions
  155.     If GetUserName(s, c) Then User = Left$(s, c - 1)
  156. End Property
  157.  
  158. Property Get Machine() As String
  159.     Dim s As String, c As Long
  160.     c = 16: s = String$(16, 0)
  161.     If GetComputerName(s, c) Then Machine = Left$(s, c)
  162. End Property
  163.  
  164. #If fComponent = 0 Then
  165. Private Sub ErrRaise(e As Long)
  166.     Dim sText As String, sSource As String
  167.     If e > 1000 Then
  168.         sSource = App.ExeName & ".System"
  169.         Select Case e
  170.         Case eeBaseSystem
  171.             BugAssert True
  172.        ' Case ee...
  173.        '     Add additional errors
  174.         End Select
  175.         Err.Raise COMError(e), sSource, sText
  176.     Else
  177.         ' Raise standard Visual Basic error
  178.         sSource = App.ExeName & ".VBError"
  179.         Err.Raise e, sSource
  180.     End If
  181. End Sub
  182. #End If
  183.  
  184.